package com.ruoyi.project.hissys.controller;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.hissys.domain.HisSysDept;
import com.ruoyi.project.hissys.service.IHisSysDeptService;
import com.ruoyi.project.system.domain.SysPost;
import com.ruoyi.project.system.service.ISysPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * 科室信息操作处理
 *
 * @author zsz
 * @since  1.0
 * @date: 2021.4.28
 */
@RestController
@RequestMapping("/hissys/dept")
public class HisSysDeptController extends BaseController {

    //引入service业务层的代码 ssm 和  mvc 的要求
    @Autowired
    private IHisSysDeptService deptService;

    /**
     * 获取科室的列表list
     */
    @PreAuthorize("@ss.hasPermi('hissys:dept:list')")
    @GetMapping("/list")
    public TableDataInfo list(HisSysDept dept)
    {
        // 开始分页查询,利用pagehelp  把list 底层变成 page对象
        startPage();
        // page对象
        List<HisSysDept> list = deptService.selectDeptList(dept);
        System.out.println(list);
        //TableDataInfo 这个方法返回一个 前端要的分页数据对象
        return getDataTable(list);
    }


    /**
     * 新增科室的列表
     */
    @PreAuthorize("@ss.hasPermi('hissys:dept:add')")
    @Log(title = "新增科室", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@Validated @RequestBody HisSysDept dept)
    {
        if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
        {
            return AjaxResult.error("新增科室'" + dept.getDeptName() + "'失败，科室名称已存在");
        }
        // 设置登录用户名, 就是创建者的名称
        dept.setCreateBy(SecurityUtils.getUsername());
        return toAjax(deptService.insertDept(dept));
    }
    /**
     * 新增科室的列表
     */
    @PreAuthorize("@ss.hasPermi('hissys:dept:update')")
    @Log(title = "修改科室", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult update(@Validated @RequestBody HisSysDept dept)
    {
        if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
        {
            return AjaxResult.error("新增科室'" + dept.getDeptName() + "'失败，科室名称已存在");
        }
        // 设置登录用户名, 就是创建者的名称
        dept.setUpdateBy(SecurityUtils.getUsername());
        return toAjax(deptService.updateDept(dept));
    }

    /**
     * 根据岗位编号获取详细信息
     */
    @PreAuthorize("@ss.hasPermi('hissys:dept:query')")
    @GetMapping(value = "/{deptId}")
    public AjaxResult getInfo(@PathVariable Long deptId)
    {
        return AjaxResult.success(deptService.selectDeptById(deptId));
    }


}
